1
За пределами базового рисования: Композитные операции и инструменты распыления
AI020Lesson 10
00:00

В этом модуле происходит переход от статических путей к динамическим, управляемым событиями инструментам за счёт изменения состояния CanvasRenderingContext2D состояния. Мы сосредоточены на расширении возможностей приложения с помощью высших порядковых шаблонов и математической фильтрации.

1. Шаблоны инструментов высшего порядка

Инструменты, такие как tools.Line абстрагируют события мыши с помощью вспомогательных функций, таких как trackDrag. Напротив, tools.Spray реализует повторение по интервалам с помощью setInterval, что позволяет непрерывно размещать пиксели, пока мышь удерживается.

2. Математические ограничения

Простое случайное смещение создаёт квадратное распределение. Чтобы добиться естественного круглого эффекта «кисти», мы используем теорему Пифагора для фильтрации точек: $x^2 + y^2 < r^2$. Альтернативно можно использовать полярные координаты с Math.sin и Math.cos для преобразования.

3. Композитные операции и состояние

Помимо стандартных линий, свойство globalCompositeOperation определяет, как новые пиксели взаимодействуют с уже существующими. Например, установка его в 'destination-out' позволяет функции tools.Erase сделать пиксели прозрачными, а не просто закрасить их белым цветом. Элементы управления пользовательского интерфейса, такие как controls.color и controls.brushSize обеспечивают мгновенные обновления для fillStyle и lineWidth соответственно.

Свойство lineCap определяет форму концов нарисованных линий (например, 'round' или 'square'), что критически важно для гладкого рисования.
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>